1. Technical Field
The invention disclosed broadly relates to data processing systems and more particularly relates to a system and method for finite state machine processing in a multi-resource, multi-process environment.
2. Background Art
Finite state machines (FSM) are commonly used in the implementation of telecommunications protocols and of input/output processors because finite state machines define all possible conditions completely and unambiguously. Unfortunately, a finite state machine designed for complete coverage, defines a set of "actions" which, when implemented, result in a code set which is extensive and complex.
Furthermore, it is quite common that a system which employs a finite state machine will be required to support multiple finite state machines. Such a system may be implementing different protocols or different node types implementing these protocols. Each of these node types requires a separate finite state machine.
The process carried out by a finite state machine will have many component processes or actions. The actions may have slight functional differences, depending on the type of process performed or they may vary by their sequence of execution. The desirability of modular design becomes difficult to achieve under these conditions.
One particular problem occurs when a system must support multiple and various types of resources. Each resource type will require service by its own finite state machine. In addition, there may be a demand for concurrent access to the finite state machine by other system processes. In addition, since new resource types may be added in the future, the implementation of new action processes will yield an unmanageable mass of code for its implementation.
In order to solve this problem, an action process structure must be developed that provides for modularity of design, concurrent access to finite state machines, and ease of maintenance.
A particular instance of this problem can occur as follows. An application may require that resource types have various types of link connections in an advanced peer-to-peer network (APPN). Advanced peer-to-peer networking is an extension to system network architecture (SNA) featuring greater distributed network control that avoids critical hierarchical dependencies, thereby isolating the effects of single-point failures. APPN also features dynamic exchange of network topology information to foster ease of connection and reconfiguration, adaptive route selection, and simplified network definition. APPN also features automated resource registration and directory look-up. APPN extends the logical unit 6.2 (LU 6.2) peer orientation for end user services to network control. APPN also uses LU 6.2 protocols in its control point sessions that provide the network control.
The particular problem application may have a large set of link connections, each one of the link types requiring its own finite state machine processing. The problem application may also have multiple processes that may need to perform finite state machine processing, concurrently. The problem application may also operate in an environment where one process will access the finite state machine processor, only to be interrupted by another higher priority process. Still further, the application problem may have different link connection types where there is a common collection of tasks that could be executed as actions resulting from finite state machine processing.
In a complex problem application such as this, the amount of code necessary to define the variety of finite state machines needed to carry out the application, becomes prohibitively large.